function [M] = PrefI(S,P)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% File:               PrefI.m
%
% Authors:            Zuheir Desai and Tasos Kalandrakis
%
% Description:        Outputs a matrix of individual indifferent 
%                     preferences for party j over other parties h                     
%
% Created:            Jan - 2020
%
% Last Modified:      Jun - 2024
%
% Language:           MATLAB
%
% Related References: [1] Zuheir Desai and Tasos Kalandrakis. 2024. "The 
%                     Core of the Party System," Journal of Politics, 
%                     conditionally accepted.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright (c) 2024, Zuheir Desai and Tasos Kalandrakis
% All rights reserved.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions
% are met:
%
% 1. Redistributions of source code must retain the above copyright
% notice, this list of conditions and the following disclaimer.
%
%
% 2. Redistributions in binary form must reproduce the above copyright
% notice, this list of conditions and the following disclaimer in the
% documentation and/or other materials provided with the distribution.
%
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
% A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
% HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
% SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
% LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
% DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
% THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
% (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
% OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

% INPUT     S: Sympathy score matrix (a N x J matrix)
% INPUT     P: Party names (a 1 x J cell)
% OUTPUT    M: Matrix of individual idifference of Party j over other
%               parties (a N x (J-1) matrix)

% For all parties j in P:
%   First split sympathy score matrix into a vector of party j scores and a
%   matrix of all party scores except for j. If individual i is indifferent
%   between h and j, then m_C(j,s_i) = 1, else 0. Repeat for all parties.

J = length(P);
N = length(S);
M = zeros(N,J*(J-1));
for j=1:J
    Sj = S(:,j);
    Sh = S(:,setdiff(1:length(P),j));
    Temp = double((Sj(:) == Sh(:,:)));
    Temp(isnan(Sj),:) = NaN;
    Temp(isnan(Sh)) = NaN;
    M(:,(j+(j-1)*(J-2)):(j*(J-1)))= Temp;
end
end
